@@ -47,11 +47,27 @@ public class Preferences { |
||
47 | 47 |
mPrefs.edit().putString("gatherLocation",gatherLocation).commit(); |
48 | 48 |
} |
49 | 49 |
|
50 |
- public String getTourGatherLocation(){ |
|
51 |
- return mPrefs.getString("gatherLocation",NullStr); |
|
50 |
+ public String getTourGatherLon(){ |
|
51 |
+ return mPrefs.getString("gatherLon",NullStr); |
|
52 |
+ } |
|
53 |
+ |
|
54 |
+ |
|
55 |
+ public void setTourGatherLat(String gatherLat){ |
|
56 |
+ mPrefs.edit().putString("gatherLat",gatherLat).commit(); |
|
57 |
+ } |
|
58 |
+ |
|
59 |
+ public String getTourGatherLat(){ |
|
60 |
+ return mPrefs.getString("gatherLat",NullStr); |
|
52 | 61 |
} |
53 | 62 |
|
54 | 63 |
|
64 |
+ public void setTourGatherLon(String gatherLon){ |
|
65 |
+ mPrefs.edit().putString("gatherLon",gatherLon).commit(); |
|
66 |
+ } |
|
67 |
+ |
|
68 |
+ public String getTourGatherLocation(){ |
|
69 |
+ return mPrefs.getString("gatherLocation",NullStr); |
|
70 |
+ } |
|
55 | 71 |
public void setTourGuidePhone(String phone){ |
56 | 72 |
mPrefs.edit().putString("tour_phone",phone).commit(); |
57 | 73 |
} |
@@ -170,6 +170,14 @@ public class TabRecentPhotoFragment extends BaseFragment implements SwipeRefresh |
||
170 | 170 |
String gatherMap = group.getString("gather_screenshot"); |
171 | 171 |
Preferences.getInstance(context).setGatherMap(gatherMap); |
172 | 172 |
} |
173 |
+ if(group.has("gather_lat")){ |
|
174 |
+ String lat = group.getString("gather_lat"); |
|
175 |
+ Preferences.getInstance(context).setTourGatherLat(lat); |
|
176 |
+ } |
|
177 |
+ if(group.has("gather_lon")){ |
|
178 |
+ String lon = group.getString("gather_lon"); |
|
179 |
+ Preferences.getInstance(context).setTourGatherLon(lon); |
|
180 |
+ } |
|
173 | 181 |
} |
174 | 182 |
}else{ |
175 | 183 |
Preferences.getInstance(context).setTourMode(false); |
@@ -154,6 +154,14 @@ public class MyLocationService extends Service implements Handler.Callback{ |
||
154 | 154 |
String gatherMap = group.getString("gather_screenshot"); |
155 | 155 |
Preferences.getInstance(context).setGatherMap(gatherMap); |
156 | 156 |
} |
157 |
+ if(group.has("gather_lat")){ |
|
158 |
+ String lat = group.getString("gather_lat"); |
|
159 |
+ Preferences.getInstance(context).setTourGatherLat(lat); |
|
160 |
+ } |
|
161 |
+ if(group.has("gather_lon")){ |
|
162 |
+ String lon = group.getString("gather_lon"); |
|
163 |
+ Preferences.getInstance(context).setTourGatherLon(lon); |
|
164 |
+ } |
|
157 | 165 |
} |
158 | 166 |
}else{ |
159 | 167 |
Preferences.getInstance(context).setTourGatherLocation(""); |
@@ -1,6 +1,7 @@ |
||
1 | 1 |
package ai.pai.client.views; |
2 | 2 |
|
3 | 3 |
import android.app.Activity; |
4 |
+import android.content.Intent; |
|
4 | 5 |
import android.text.TextUtils; |
5 | 6 |
import android.view.LayoutInflater; |
6 | 7 |
import android.view.View; |
@@ -48,29 +49,86 @@ public class GatherInfoPopup extends BasePopupWindow { |
||
48 | 49 |
return popupView; |
49 | 50 |
} |
50 | 51 |
|
51 |
- private void init(){ |
|
52 |
- String time = TimeUtils.getGatherTimeStr(Preferences.getInstance(context).getGatherTime()-30*60*1000); |
|
53 |
- if(time.length()==0){ |
|
52 |
+ private void init() { |
|
53 |
+ String time = TimeUtils.getGatherTimeStr(Preferences.getInstance(context).getGatherTime() - 30 * 60 * 1000); |
|
54 |
+ if (time.length() == 0) { |
|
54 | 55 |
time = context.getString(R.string.gather_no_time); |
55 | 56 |
} |
56 | 57 |
String location = Preferences.getInstance(context).getTourGatherLocation(); |
57 |
- if(location.length()==0){ |
|
58 |
+ if (location.length() == 0) { |
|
58 | 59 |
location = context.getString(R.string.gather_no_location); |
59 | 60 |
} |
60 |
- gatherInfoText.setText(context.getString(R.string.gather_info,time ,location)); |
|
61 |
- if(!TextUtils.isEmpty(Preferences.getInstance(context).getGatherMap())){ |
|
62 |
- PhotoLoader.getInstance(context).displayImage(Preferences.getInstance(context).getGatherMap(),gatherMap); |
|
63 |
- gatherMap.setOnClickListener(new View.OnClickListener(){ |
|
61 |
+ gatherInfoText.setText(context.getString(R.string.gather_info, time, location)); |
|
62 |
+ if (!TextUtils.isEmpty(Preferences.getInstance(context).getGatherMap())) { |
|
63 |
+ PhotoLoader.getInstance(context).displayImage(Preferences.getInstance(context).getGatherMap(), gatherMap); |
|
64 |
+ gatherMap.setOnClickListener(new View.OnClickListener() { |
|
64 | 65 |
@Override |
65 | 66 |
public void onClick(View v) { |
66 |
- new FullScreenImgPopup(context,Preferences.getInstance(context).getGatherMap()).showPopupWindow(); |
|
67 |
+ String lat = Preferences.getInstance(context).getTourGatherLat(); |
|
68 |
+ String lon = Preferences.getInstance(context).getTourGatherLon(); |
|
69 |
+ if (TextUtils.isEmpty(lat) || TextUtils.isEmpty(lon) || !callThirdPartyMap(lat, lon)) { |
|
70 |
+ new FullScreenImgPopup(context, Preferences.getInstance(context).getGatherMap()).showPopupWindow(); |
|
71 |
+ } |
|
67 | 72 |
} |
68 | 73 |
}); |
69 |
- }else{ |
|
74 |
+ } else { |
|
70 | 75 |
gatherMap.setVisibility(View.GONE); |
71 | 76 |
} |
72 | 77 |
} |
73 | 78 |
|
79 |
+ private boolean callThirdPartyMap(String lat, String lon) { |
|
80 |
+ |
|
81 |
+ if (isAppExist("com.autonavi.minimap")) { |
|
82 |
+ try { |
|
83 |
+ Intent intent = Intent.getIntent("androidamap://viewMap?sourceApplication=paiai&lat=" + lat + "&lon=" + lon + "&dev=0"); |
|
84 |
+ context.startActivity(intent); |
|
85 |
+ return true; |
|
86 |
+ } catch (Exception e) { |
|
87 |
+ e.printStackTrace(); |
|
88 |
+ } |
|
89 |
+ |
|
90 |
+ } else if (isAppExist("com.baidu.BaiduMap")) { |
|
91 |
+ double latd = Double.parseDouble(lat); |
|
92 |
+ double lond = Double.parseDouble(lon); |
|
93 |
+ Double[] loc = GCJ02ToBD09(latd, lond); |
|
94 |
+ latd = loc[0]; |
|
95 |
+ lond = loc[1]; |
|
96 |
+ try { |
|
97 |
+ Intent intent = Intent.getIntent("intent://map/marker?location=" + String.valueOf(latd) + "," + String.valueOf(lond) + "&title=集合位置&src=paiai#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end"); |
|
98 |
+ context.startActivity(intent); |
|
99 |
+ return true; |
|
100 |
+ } catch (Exception e) { |
|
101 |
+ e.printStackTrace(); |
|
102 |
+ } |
|
103 |
+ } |
|
104 |
+ return false; |
|
105 |
+ } |
|
106 |
+ |
|
107 |
+ |
|
108 |
+ private boolean isAppExist(String packageName) { |
|
109 |
+ if (TextUtils.isEmpty(packageName)) |
|
110 |
+ return false; |
|
111 |
+ try { |
|
112 |
+ context.getPackageManager().getPackageInfo(packageName, 0); |
|
113 |
+ return true; |
|
114 |
+ } catch (Exception e) { |
|
115 |
+ return false; |
|
116 |
+ } |
|
117 |
+ |
|
118 |
+ } |
|
119 |
+ |
|
120 |
+ private static double x_PI = 3.14159265358979324 * 3000.0 / 180.0; |
|
121 |
+ |
|
122 |
+ public static Double[] GCJ02ToBD09(Double gcj_lon, Double gcj_lat) { |
|
123 |
+ double z = |
|
124 |
+ Math.sqrt(gcj_lon * gcj_lon + gcj_lat * gcj_lat) + 0.00002 * Math.sin(gcj_lat * x_PI); |
|
125 |
+ double theta = Math.atan2(gcj_lat, gcj_lon) + 0.000003 * Math.cos(gcj_lon * x_PI); |
|
126 |
+ Double[] arr = new Double[2]; |
|
127 |
+ arr[0] = z * Math.cos(theta) + 0.0065; |
|
128 |
+ arr[1] = z * Math.sin(theta) + 0.006; |
|
129 |
+ return arr; |
|
130 |
+ } |
|
131 |
+ |
|
74 | 132 |
@Override |
75 | 133 |
public View getAnimaView() { |
76 | 134 |
return popupView.findViewById(R.id.popup_anima); |